package visual.Menu;

import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
//import java.io.*;
import javax.swing.*;
import visual.Cargar.VentanaCargar;
import visual.CrearPartida.VentanaPartida;



public class VentanaMenu extends JFrame
{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 6525762216378885855L;
	
	JMenuBar menu;
    JMenu Partida;
    JMenu ayuda;
    JMenuItem Nuevo;
    JMenuItem Cargar;
    JMenuItem Salir;
    JMenuItem Ayuda;
	
	public VentanaMenu ()
	{
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	    this.setResizable(false);
	    this.setAlwaysOnTop(false);
	    this.setLocationRelativeTo(null);
	    
	    menu = new JMenuBar();
	    Partida = new JMenu("Partida");
	    ayuda = new JMenu("Ayuda");
	    
	    AccionMenu accionNuevo = new AccionMenu();
	    accionNuevo.putValue(Action.NAME, "Nuevo");
	    accionNuevo.putValue(Action.ACCELERATOR_KEY, KeyStroke.getAWTKeyStroke('N', Event.CTRL_MASK));
	    
	    AccionMenu accionOpciones = new AccionMenu();
	    accionOpciones.putValue(Action.NAME, "Cargar");
	    accionOpciones.putValue(Action.ACCELERATOR_KEY, KeyStroke.getAWTKeyStroke('C', Event.CTRL_MASK));
	    
	    AccionMenu accionSalir = new AccionMenu();
	    accionSalir.putValue(Action.NAME, "Salir");
	    accionSalir.putValue(Action.ACCELERATOR_KEY, KeyStroke.getAWTKeyStroke('S', Event.CTRL_MASK));
	    
	    AccionMenu accionAyuda = new AccionMenu();
	    accionAyuda.putValue(Action.NAME, "Ayuda");
	    accionAyuda.putValue(Action.ACCELERATOR_KEY, KeyStroke.getAWTKeyStroke('A', Event.CTRL_MASK));
	    
	    Nuevo = new JMenuItem(accionNuevo);
	    Cargar = new JMenuItem(accionOpciones);
	    Salir = new JMenuItem(accionSalir);
	    Ayuda = new JMenuItem(accionAyuda);
	    
	    menu.add(Partida);
	    menu.add(ayuda);
	    
	    Partida.add(Nuevo);
	    Partida.add(Cargar);
	    Partida.add(Salir);
	    ayuda.add(Ayuda);
	    
	    this.setJMenuBar(menu);
	    
	    ImageIcon fondo = new ImageIcon(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("12807453259s70VE.jpg")));
	    JLabel LabelFondo = new JLabel(fondo);
	    LabelFondo.setSize(fondo.getIconHeight(),fondo.getIconWidth());
	    this.setSize(fondo.getIconHeight(), fondo.getIconWidth() + 20);
	    this.add(LabelFondo);
	}
	

	public static void main(String[] args)
	{
		try
		{
			UIManager.setLookAndFeel( "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel" );
		}
		catch (ClassNotFoundException e)
		{
			e.printStackTrace();
		}
		catch (InstantiationException e)
		{
			e.printStackTrace();
		}
		catch (IllegalAccessException e)
		{
			e.printStackTrace();
		}
		catch (UnsupportedLookAndFeelException e)
		{
			e.printStackTrace();
		}
		VentanaMenu v = new VentanaMenu();
		v.setVisible(true);
	}
	
	class AccionMenu extends AbstractAction
	{
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;

		public void actionPerformed(ActionEvent e)
		{
			JMenuItem h = (JMenuItem)e.getSource();
			if(h.getText().equals("Salir"))
				System.exit(ABORT);
			else
			{
				if(h.getText().equals("Nuevo"))
				{
					dispose();
					VentanaPartida v = null;
					try {
						v = new VentanaPartida();
					} catch (SQLException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					} catch (ClassNotFoundException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					v.setVisible(true);
				}
				else
				{
					if(h.getText().equals("Cargar"))
					{/*
						dispose();
						VentanaCargar v = new VentanaCargar();
						v.setVisible(true);*/
					}
					else
					{
						
						if(h.getText().equals("Ayuda"))
						{
							try
							{
					            File directorio = new File("temp");
					            //Crear un nuevo directorio a nivel del jar.
					            directorio.mkdirs();
					            directorio.setWritable(true);
					            //Copiar la direccion
					            String archivo = directorio.getCanonicalPath() + File.pathSeparator + "Ayuda.pdf";
					            //Nuevo archivo en esa direccion
					            File temp = new File(archivo);
					            InputStream is = this.getClass().getResourceAsStream("Ayuda.pdf");
					            FileOutputStream archivoDestino = new FileOutputStream(temp);
					            FileWriter fw = new FileWriter(temp);
					            byte[] buffer = new byte[512*1024];
					            //lees el archivo hasta que se acabe...
					            int nbLectura;
					            while ((nbLectura = is.read(buffer)) != -1)
					                archivoDestino.write(buffer, 0, nbLectura);
					            //Cerrar el archivo, el inputS y el FileW
					            fw.close();
					            archivoDestino.close();
					            is.close();
					            //Abrir el archivo temporal
					            Desktop.getDesktop().open(temp);
					            temp.deleteOnExit();
					            
					        }
							catch (IOException ex)
							{
					            JOptionPane.showMessageDialog(null, "Error al abrir el PDF", "Error", JOptionPane.ERROR_MESSAGE, null);
					        }
						}
						
					}
				}
			}
		}
	}

}